#ifndef CONTROLER_H
#define CONTROLER_H

/**
*@file controler.h Klasa wyspecjalizowana w przekazywaniu sygnalow pomiedzy interfejsem uzytkownika
*/

#include <QWidget>
#include <QList>
#include "cairoicon.h"
#include "kaleidoscope.h"
/// \class Controler
class Controler : public QWidget
{
    Q_OBJECT
public:
    /** Konstruktor
      */
    Controler();
private:
    /** Metoda pomocnicza, ktorej zadaniem jest trzymanie tworzenia interfejsu uzytkownika w jednym miejscu
      * @return lista cairo-icon, ktora przekazuje sie cairo-dock'owi
      */
    QList<CairoIcon*> * createMenu();
    /// wskaznik na glowny model programu
    Kaleidoscope * _model;
 public slots:
    /** Slot odpowiadajacy za przekazanie modelowi zadania zwiekszenia liczby osi
      */
    void changeAxis();
    /** Slot odpowiadajacy za przekazanie modelowi zadania zwiekszenia promienia obrazka
      */
    void changeRadius();
    /** Slot odpowiadajacy za przekazanie modelowi zadania zmiany textury
      */
    void changeTexture();
    /** Slot odpowiadajacy za przekazanie modelowi zmiany kata obrotu
      */
    void changeAngle();
    void savePixmap();
    /** Slot odpowiadajacy za wlaczenie animacji.
      */
    void changeAnimation();
    /** Slot odpowiadajacy za wyemitowanie sygnalu quit() i zakonczenie aplikacji
      */
    void exit();
 signals:
    /** Sygnal konczacy program
      */
     void quit();
};

#endif // CONTROLER_H
